// 引入用来发送请求的方法（封装成promise的request）
import { request } from "../../request/index.js"
import regeneratorRuntime from '../../lib/runtime/runtime';
Page({
  data: {
    // 左侧的菜单数据
    leftMenuList: [],
    // 右侧的菜单数据
    rightMenuList: [],
    // 被激活的左侧菜单
    currentIndex: 0
  },
  // 接口返回的数据
  catesList: [],
  onLoad: function (options) {
    // 1. 获取本地存储中的数据（小程序中也是有本地存储技术的）
    const cates = wx.getStorageSync("cates")
    // 2. 判断是否能拿到cates
    if (!cates) {
      // 不存在 发送请求获取数据
      this.getCatesList()
    }
    //存在 判断是否过期
    else {
      // 定义过期时间 10s 改成五分钟
      if (Date.now() - cates.time > 1000 * 10) {
        //重新发送请求
        this.getCatesList()
      }
      //可以使用旧的数据
      else {
        this.catesList = cates.data
        let leftMenuList = this.catesList.map(v => v.cat_name)
        this.getRightMenuList()
        this.setData({
          leftMenuList,
        })
      }
    }

  },
  // 获取分类数据
  async getCatesList () {
    const res = await request({
      url: '/categories'
    })
    // 将返回结果赋值给catesList
    this.catesList = res
    // 将接口的数据存入本地存储中
    wx.setStorageSync("cates", { time: Date.now(), data: this.catesList });
    //构造左侧的大菜单数据(遍历catesList，返回一个新的数组)
    let leftMenuList = this.catesList.map(v => v.cat_name)
    this.getRightMenuList()
    this.setData({
      leftMenuList,
    })


  },
  // 获取右侧菜单数据
  getRightMenuList () {
    // 构造右侧的商品数据
    let rightMenuList = this.catesList[this.data.currentIndex].children
    this.setData({
      rightMenuList
    })
  },
  // 左侧菜单点击事件
  handleTap (e) {
    this.setData({
      // 将激活的索引设置为选中的那个
      currentIndex: e.currentTarget.dataset.index
    })
    this.getRightMenuList()
  }
});
